#ifndef __I386_DESCRIPTOR_H__
#define __I386_DESCRIPTOR_H__

/* 存储段描述符/系统段描述符 */
struct s_descriptor {		/* 共 8 个字节 */ 
	uint16	limit_low;		/* Limit */
	uint16	base_low;		/* Base */
	uint8	base_mid;		/* Base */
	uint8	attr1;			/* P(1) DPL(2) DT(1) TYPE(4) */
	uint8	limit_high_attr2;	/* G(1) D(1) 0(1) AVL(1) LimitHigh(4) */
	uint8	base_high;		/* Base */
};

/* 门描述符 */
struct s_gate {
	uint16	offset_low;	/* Offset Low */
	uint16	selector;	/* Selector */
	uint8	dcount;		/* 该字段只在调用门描述符中有效。如果在利用
				   调用门调用子程序时引起特权级的转换和堆栈
				   的改变，需要将外层堆栈中的参数复制到内层
				   堆栈。该双字计数字段就是用于说明这种情况
				   发生时，要复制的双字参数的数量。*/
	uint8	attr;		/* P(1) DPL(2) DT(1) TYPE(4) */
	uint16	offset_high;	/* Offset High */
};

#endif // __I386_DESCRIPTOR_H__
